package com.yzy.soft.system.util;

import com.alibaba.fastjson.JSONObject;

//import net.sf.json.JSONArray;
//import net.sf.json.JSONObject;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class JSONUtil {

    private static boolean isTab = true;






    public String stringToJSON(String strJson) {
        // 计数tab的个数
        int tabNum = 0;
        StringBuffer jsonFormat = new StringBuffer();
        int length = strJson.length();

        for (int i = 0; i < length; i++) {
            char c = strJson.charAt(i);
            if (c == '{') {
                tabNum++;
                jsonFormat.append(c + "\n");
                jsonFormat.append(getSpaceOrTab(tabNum,true));
            } else if (c == '}') {
                tabNum--;
                jsonFormat.append("\n");
                jsonFormat.append(getSpaceOrTab(tabNum,true));
                jsonFormat.append(c);
            } else if (c == ',') {
                jsonFormat.append(c + "\n");
                jsonFormat.append(getSpaceOrTab(tabNum,true));
            } else {
                jsonFormat.append(c);
            }
        }
        return jsonFormat.toString();
    }

    // 是空格还是tab
    public static String getSpaceOrTab(int tabNum,boolean isTab) {
        StringBuffer sbTab = new StringBuffer();
        for (int i = 0; i < tabNum; i++) {
            if (isTab) {
                sbTab.append('\t');
            } else {
                sbTab.append("    ");
            }
        }
        return sbTab.toString();
    }


    public static String JSONFormat_Layui_Table(String strJson,String cols) {
        // 计数tab的个数
        int tabNum = 0;
        int tabNumMax = 0;

        StringBuffer jsonFormat = new StringBuffer();
        int length = strJson.length();

        for (int i = 0; i < length; i++) {
            char c = strJson.charAt(i);
            if (c == '{') {
                tabNum++;
                tabNumMax++;
                jsonFormat.append(c + "\n");
                jsonFormat.append(getSpaceOrTab(tabNum,true));
            } else if (c == '}') {
                tabNum--;
                jsonFormat.append("\n");
                jsonFormat.append(getSpaceOrTab(tabNum,true));
                jsonFormat.append(c);
            } else if (c == ',') {
                jsonFormat.append("\n" );
                jsonFormat.append(getSpaceOrTab(tabNum,true)+ c);
            } else {
                jsonFormat.append(c);
            }
        }

        String colsre=JSONFormat_Layui_Table_Col(cols,tabNumMax);
        String result =StringUtil.regexReplace(jsonFormat.toString(),"cols:\\[]","cols:"+colsre+"");
        return result.toString();
    }


    public static String JSONFormat_Layui_Table_Col(String strJson,int tabNumStart) {
        // 计数tab的个数
        int tabNum = tabNumStart+1;
        StringBuffer jsonFormat = new StringBuffer();
        int length = strJson.length();

        for (int i = 0; i < length; i++) {
            char c = strJson.charAt(i);
            if (c == ','&&(i+1)!=length&&'{'==strJson.charAt(i+1)) {
//                tabNum++;
                jsonFormat.append("\n"+getSpaceOrTab(tabNum,true)+c);
//                jsonFormat.append(+c);

            }
//            else if (c == '}') {
//                tabNum--;
//                jsonFormat.append("\n");
//                jsonFormat.append(getSpaceOrTab(tabNum));
//                jsonFormat.append(c);
//            }
            else {
                jsonFormat.append(c);
            }
        }
        return jsonFormat.toString();
    }

    /**
     * 使用fastjson格式化JSON字符串
     * @param content
     * @return
     */
    public static String FastJsonFormatter(String content){
        JSONObject jsonObject = JSONObject.parseObject(content);
        String str = JSONObject.toJSONString(jsonObject);
//        String str = JSONObject.toJSONString(jsonObject, true);
        return str;

    }

}


